home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO002.dsk / PRINTER.bas < prev    next >
BASIC Source File  |  2012-02-16  |  5KB  |  197 lines

  1. 100  REM 'PRINTER' FOR FREEWRITER
  2. 110  REM WRITTEN BY PAUL LUTUS    
  3. 120 D$ =  CHR$(4)
  4. 130  NORMAL : PRINT  CHR$(21): SPEED= 255
  5. 140  TEXT : HOME 
  6. 150 V = 1: GOSUB 160:V = 24: GOSUB 160: GOTO 180
  7. 160  VTAB (V): HTAB (1): FOR X = 1 TO 39: PRINT "_";: NEXT 
  8. 170  RETURN 
  9. 180  VTAB (5): HTAB (7)
  10. 190  PRINT "[ THIS PROGRAM IS FREEWARE ]"
  11. 200  PRINT : PRINT : HTAB (4)
  12. 210  PRINT "YOU ARE FREE TO DISTRIBUTE COPIES"
  13. 220  PRINT : HTAB (8)
  14. 230  PRINT "BUT YOU MAY NOT SELL THEM."
  15. 240  VTAB (18): HTAB (11)
  16. 250  PRINT "THE FREEWARE PROJECT"
  17. 260  PRINT : HTAB (11)
  18. 270  PRINT "WALDEN SOFTWARE, INC."
  19. 280  PRINT : HTAB (12)
  20. 290  PRINT "(C) 1984, P. LUTUS"
  21. 300  FOR PAUSE = 0 TO 2500: NEXT 
  22. 310  REM  
  23. 320  REM  SET UP PRINTER PROGRAM
  24. 330  REM  
  25. 340  DIM M$(1,7)
  26. 350  DIM V(1,3)
  27. 360 V(0,0) =  PEEK(48688):V(0,1) =  PEEK(48689)
  28. 370  FOR X = 0 TO 7
  29. 380  READ M$(0,X): READ M$(1,X)
  30. 390  NEXT X
  31. 400  REM 
  32. 410  REM  INSTALL ERASER
  33. 420  REM 
  34. 430 A = 768
  35. 440  READ B
  36. 450  POKE A,B
  37. 460 A = A +1
  38. 470  IF B < >96  THEN 440
  39. 480  REM  
  40. 490  REM  TAKE USER'S INPUTS
  41. 500  REM  
  42. 510  PRINT  CHR$(27); CHR$(17)
  43. 520  FOR X = 0 TO 7
  44. 530  HOME 
  45. 540  PRINT "*** Prepare for Printing ***";
  46. 550  GOSUB 890
  47. 560 Q$ = M$(1,X)
  48. 570  INPUT "";L$
  49. 580  IF X = 2  THEN 600
  50. 590  IF L$ = ""  THEN L$ = M$(1,X)
  51. 600  IF X < >0  THEN 660
  52. 610  IF L$ < >"?"  THEN 650
  53. 620  HOME 
  54. 630  PRINT D$;"CAT,TTXT
  55. 640  GOTO 550
  56. 650  IF L$ = "Q"  OR L$ = "q"  THEN  HOME : PRINT D$"-STARTUP"
  57. 660  IF X < >2  THEN 790
  58. 670  IF L$ < >"?"  THEN 790
  59. 680  HOME 
  60. 690  PRINT "The (optional) Top Line entry is placed"
  61. 700  PRINT "at the top of each page. If you include"
  62. 710  PRINT "a '#' in your entry, the page number"
  63. 720  PRINT "will be printed at that location."
  64. 730  PRINT "Example: 'Page #' will be printed as"
  65. 740  PRINT "'Page 1' on the first page, 'Page 2'"
  66. 750  PRINT "on the second, and so forth.": PRINT 
  67. 760  INPUT "(Press Return) :";L$
  68. 770  HOME 
  69. 780  GOTO 550
  70. 790 M$(1,X) = L$
  71. 800  NEXT X
  72. 810  HOME 
  73. 820  PRINT "Here are your Selections :";
  74. 830 X = 7: GOSUB 890
  75. 840  PRINT : PRINT 
  76. 850  INPUT "Are The Selections Okay (Yes/No) :";L$
  77. 860  GOSUB 970
  78. 870  IF C$ < >"Y"  THEN 510
  79. 880  GOTO 1250
  80. 890  FOR Y = 0 TO X
  81. 900  PRINT : PRINT 
  82. 910  PRINT M$(0,Y);" :";
  83. 920 H =  PEEK(36)
  84. 930  PRINT M$(1,Y);
  85. 940  POKE 36,H
  86. 950  NEXT Y
  87. 960  RETURN 
  88. 970 C$ = ""
  89. 980  IF L$ = ""  THEN  RETURN 
  90. 990 C$ =  LEFT$(L$,1)
  91. 1000 C =  ASC(C$)
  92. 1010  IF C >96  THEN C = C -32
  93. 1020 C$ =  CHR$(C)
  94. 1030  RETURN 
  95. 1040  REM  
  96. 1050  REM  THESE ARE THE DEFAULT VALUES
  97. 1060  REM  
  98. 1070  DATA  "File Name(?=Catalog,Q=Quit)","" 
  99. 1080  DATA   "Printer Slot (0=Screen)","1"
  100. 1090  DATA   "Top Line(?=Help)","- # -"
  101. 1100  DATA  "Left Margin","10" 
  102. 1110  DATA  "Right Margin","70" 
  103. 1120  DATA  "Number of Printed Lines","58" 
  104. 1130  DATA  "Page Length in Lines","66" 
  105. 1140  DATA  "Automatic Paper Feed","No" 
  106. 1150  REM  
  107. 1160  REM  THIS SECTION PRINTS
  108. 1170  REM  
  109. 1180  POKE (48688),V(Z,0): POKE (48689),V(Z,1)
  110. 1190  RETURN 
  111. 1200 M = LM
  112. 1210  IF M = 0  THEN  RETURN 
  113. 1220  FOR X = 1 TO M
  114. 1230  PRINT " ";
  115. 1240  NEXT : RETURN 
  116. 1250  PRINT D$;"PR#";M$(1,1)
  117. 1260  PRINT 
  118. 1270 V(1,0) =  PEEK(48688):V(1,1) =  PEEK(48689)
  119. 1280 Z = 0: GOSUB 1180
  120. 1290  HOME 
  121. 1300  PRINT "Loading "; CHR$(34);M$(1,0); CHR$(34)
  122. 1310 BA =  PEEK(110) +1:BA = BA *256
  123. 1320  POKE 0,0
  124. 1330  POKE 1,( PEEK(110) +1)
  125. 1340  POKE 2,( PEEK(112) -1)
  126. 1350  CALL 768
  127. 1360  ONERR  GOTO 1960
  128. 1370  PRINT D$;"BLOAD";M$(1,0);",A";BA;",TTXT,D1"
  129. 1380  POKE 216,0
  130. 1390 C$ =  LEFT$(M$(1,7),1)
  131. 1400 SP = 1: IF C$ = "Y"  OR C$ = "y"  THEN SP = 0
  132. 1410 LM =  VAL(M$(1,3))
  133. 1420 RM =  VAL(M$(1,4))
  134. 1430 PL =  VAL(M$(1,5))
  135. 1440 PI =  VAL(M$(1,6))
  136. 1450 LL = RM -LM
  137. 1460  HOME 
  138. 1470  PRINT "(Press 'ESC' to stop print)": PRINT 
  139. 1480  INPUT "Press Return to Begin Printing :";L$
  140. 1490 Z = 1: GOSUB 1180
  141. 1500 P = 1
  142. 1510  IF SP = 0  THEN 1550
  143. 1520 Z = 0: GOSUB 1180
  144. 1530  PRINT  CHR$(7): INPUT "Load paper then press Return :";L$
  145. 1540 Z = 1: GOSUB 1180
  146. 1550 L = 0
  147. 1560  IF M$(1,2) = ""  THEN 1680
  148. 1570 L$ = M$(1,2)
  149. 1580  GOSUB 1200
  150. 1590 M = ((RM -LM) -( LEN(L$)))/2
  151. 1600  GOSUB 1220
  152. 1610  FOR X = 1 TO  LEN(L$)
  153. 1620 C$ =  MID$ (L$,X,1)
  154. 1630  IF C$ < >"#"  THEN  PRINT C$;
  155. 1640  IF C$ = "#"  THEN  PRINT P;
  156. 1650  NEXT X
  157. 1660  PRINT : PRINT 
  158. 1670 L = L +2
  159. 1680  GOSUB 1200
  160. 1690 TL = LL -1
  161. 1700 X = 0
  162. 1710 Q =  PEEK(BA +X)
  163. 1720  IF Q = 32  THEN TL = X
  164. 1730  IF Q = 0  OR Q = 13  THEN TL = X: GOTO 1750
  165. 1740 X = X +1: IF X <LL  THEN 1710
  166. 1750  IF TL = 0  THEN 1830
  167. 1760  FOR X = 0 TO TL -1
  168. 1770 C =  PEEK(BA +X)
  169. 1780  PRINT  CHR$(C);
  170. 1790  NEXT 
  171. 1800  IF TL < >LL -1  THEN 1830
  172. 1810 R =  PEEK(BA +TL)
  173. 1820  IF R < >32  AND R < >13  THEN 1840
  174. 1830 TL = TL +1
  175. 1840 BA = BA +TL
  176. 1850  PRINT 
  177. 1860  IF Q = 0  THEN 1930
  178. 1870  IF  PEEK(49152) = 155  THEN 1930
  179. 1880 L = L +1
  180. 1890  IF L <PL  THEN 1680
  181. 1900  IF L <PI  THEN 1850
  182. 1910 P = P +1
  183. 1920  GOTO 1510
  184. 1930 Z = 0: GOSUB 1180
  185. 1940  POKE 49168,0
  186. 1950  GOTO 510
  187. 1960  POKE 216,0
  188. 1970  PRINT  CHR$(7)
  189. 1980  PRINT "Error trying to load "; CHR$(34);M$(1,0); CHR$(34)
  190. 1990  PRINT 
  191. 2000  INPUT "(Press Return) :";L$
  192. 2010  GOTO 510
  193. 2020  REM 
  194. 2030  REM ERASER CODE
  195. 2040  REM 
  196. 2050  DATA 169,0,168,145,0,200,208,251
  197. 2060  DATA 230,1,165,1,197,2,208,240,96